#pragma once

#include "operators/invoker_params_base.h"
#include "tensor/tensor_descriptor.h"

namespace txdnn {
namespace operators {
namespace rope {

struct FwdInvokeParams : public InvokeParams {
  FwdInvokeParams() = default;

  std::size_t getWorkspaceSize() const {
    return 0;
  }

  void* getWorkspace() const {
    return nullptr;
  }

  const TensorDescriptor* x_desc_   = nullptr;
  const TensorDescriptor* cos_desc_ = nullptr;
  const TensorDescriptor* sin_desc_ = nullptr;
  const TensorDescriptor* y_desc_   = nullptr;

  const void* x_     = nullptr;
  const void* cos_   = nullptr;
  const void* sin_   = nullptr;
  void* y_           = nullptr;
};

} // namespace rope
} // namespace operators
} // namespace txdnn